Printers generally include a print controller that receives and prepares print data for a print engine. The print data typically describes logical pages which the print controller assembles onto sheets. For example, in 2-up printing, two logical pages are placed on a side (e.g., a sheet includes four pages with two pages on each side). The relationship between the logical pages and the sheets is captured in the job model for the print job.
When the print job is dispatched to the print engine, information of the job model is lost. Each sheet to be printed has an associated sheet identifier that the print engine uses for determining the order of sheets in the print job. However, there is no context at the print engine as to how the logical pages and sheets are related in the print job.
Therefore, upon suspension of a print job, a print engine controller sends the sheet identifier of the suspended sheet to the print controller for reconstruction of the print job. The print controller then rebuilds the job model from the beginning. To resume the suspended print job, those sheets having a sheet identifier larger than the sheet identifier of the suspended sheet are re-dispatched to the print engine. Prior to that, however, the print controller has to re-map the relationship of the logical pages and the sheets for the entire print job. The re-processing of the entire print job each time a job is suspended and resumed is inefficient.